<?php defined('SYSPATH') OR die('No direct access allowed.');

class individuo_Model extends Model_Core {

    public function  __construct() {
    }
    
    public function getCrianca($arrGet){        
        
        if( isset ($arrGet['data_nasc']) ){
            $arrGet['data_nasc'] = format::date_human2mysql($arrGet['data_nasc']);
        }
        
        if(empty($arrGet)){
            $sql = 'SELECT * FROM crianca INNER JOIN responsavel ON crianca.cod_responsavel = responsavel.cod_responsavel ORDER BY nome_crianca';
        } 
        else {
        $tamanho = count($arrGet);
        $i = 0;
        $or = ' AND ';
        $strSQL  = '';
        foreach ($arrGet as $key => $valor ){
                if($i == $tamanho - 1){
                    if($key == 'nome_crianca' OR $key == 'data_nasc'){
                        $strSQL .= 'crianca.' . $key . ' LIKE ' . '\'%' . $valor . '%\') ORDER BY nome_crianca';
                    } else {
                        $strSQL .= 'responsavel.' . $key . ' LIKE ' . '\'%' . $valor . '%\') ORDER BY nome_crianca';
                    }
                } else{
                    if($key == 'nome_crianca' OR $key == 'data_nasc'){
                        $strSQL .= 'crianca.' . $key . ' LIKE ' . '\'%' . $valor . '%\'' . $or;
                    } else {
                        $strSQL .= 'responsavel.' . $key . ' LIKE ' . '\'%' . $valor . '%\'' . $or;
                    }
                }
                $i++;
        }
        
        $sql = 'SELECT * FROM crianca INNER JOIN responsavel ON crianca.cod_responsavel = responsavel.cod_responsavel WHERE 1 = 1 and (' . $strSQL;
        }
        
        return Banco::executarConsulta($sql);
    }
    
    public function getAllCriancas() {
        $sql = 'SELECT * FROM crianca;';
        return Banco::executarConsulta($sql);
    }
    
    public function getCriancaId($id_crianca){
        $sql = 'SELECT * FROM crianca WHERE id_crianca = ' . $id_crianca;
        return Banco::executarConsulta($sql);
    }
    
    public function getResponsavelId($id_responsavel){
        $sql = 'SELECT * FROM responsavel WHERE cod_responsavel = ' . $id_responsavel;
        return Banco::executarConsulta($sql);
    }


    public function getIdadeCrianca(){
        $sql = 'SELECT nome_crianca, data_nasc, CURDATE() , 
(YEAR(CURDATE())-YEAR(data_nasc)) - (RIGHT(CURDATE(),5) <RIGHT(data_nasc,5)) AS idade FROM `crianca` ';
    
        return Banco::executarConsulta($sql);
    }
    
    public function getIdadeCriancaId($id_crianca){
        $sql = 'SELECT (YEAR(CURDATE())-YEAR(data_nasc)) - (RIGHT(CURDATE(),5) <RIGHT(data_nasc,5)) AS idade FROM crianca WHERE id_crianca = ' . $id_crianca;
        
        return Banco::executarConsulta($sql);
    }
    
    public function getVacinasCrianca($id_crianca) {
        $sql = 'SELECT vacinas.nome_vacina, vacinas.dose_vacina, crianca_vacinas.data_vacina FROM crianca_vacinas
                INNER JOIN vacinas ON crianca_vacinas.cod_vacina = vacinas.cod_vacina WHERE crianca_vacinas.id_crianca = ' . $id_crianca;
        
        return Banco::executarConsulta($sql);
    }
    
    public function getImunizados($cod_vacina){
        $sql = 'SELECT crianca.nome_crianca,crianca_vacinas.data_vacina FROM crianca_vacinas INNER JOIN crianca ON crianca_vacinas.id_crianca = crianca.id_crianca INNER JOIN vacinas ON crianca_vacinas.cod_vacina = vacinas.cod_vacina WHERE vacinas.cod_vacina = ' . $cod_vacina . ' ORDER BY nome_crianca'; 
        
        return Banco::executarConsulta($sql);
    }
    
    public function getAllResponsaveis(){
        $sql = 'SELECT cod_responsavel, nome_responsavel FROM responsavel';
        return Banco::executarConsulta($sql);
    }
    
    public function getResponsaveisCrianca($cod_responsavel){
        $sql = 'SELECT responsavel.nome_responsavel, crianca.id_crianca, crianca.nome_crianca, crianca.data_nasc FROM responsavel INNER JOIN crianca ON responsavel.cod_responsavel = crianca.cod_responsavel WHERE responsavel.cod_responsavel = ' . $cod_responsavel;
        return Banco::executarConsulta($sql);
    }
	
	public function getAspectosPsicossociais($id_crianca){
		$sql = 'SELECT * FROM psicossociais WHERE id_crianca = ' . $id_crianca;
		return Banco::executarConsulta($sql);
	}
    
    public function cadastrarCrianca($arrPost){
        

        
        $nome_crianca = $arrPost['nome'];
        $data_nasc = $arrPost['data_nascimento'];
        $sexo = $arrPost['radSexo'];
        $altura = $arrPost['sldAltura'];
        $peso = $arrPost['sldPeso'];
        
        $cod_responsavel = empty ($arrPost['cod_responsavel'])? "null" : '\''. $arrPost['cod_responsavel'] . '\'';

        $arrVacinasSelecionadas = isset ($arrPost['vacinas'])? $arrPost['vacinas'] : '' ;
        $arrDataVacinas = isset ($arrPost['data_vacina'])? $arrPost['data_vacina'] : '' ;
        
        $arrMoraCom = isset ($arrPost['chkMora'])? $arrPost['chkMora'] : array();
        $relacionamento = isset ($arrPost['radRelacionamento'])? $arrPost['radRelacionamento'] : '';
        $arrTrabalhaQuem = isset ($arrPost['chkTrabalha'])? $arrPost['chkTrabalha'] : array();
        $salarioFamilia = isset ($arrPost['radSalario'])? $arrPost['radSalario'] : '';
        $arrTempoLivre = isset ($arrPost['chkTempoLivre'])? $arrPost['chkTempoLivre'] : array();
        $arrEsportesPratica = isset ($arrPost['chkEsportes'])? $arrPost['chkEsportes'] : array();
        $arrViolencia = isset ($arrPost['chkViolencia'])? $arrPost['chkViolencia'] : array();
        $arrExperimentou = isset ($arrPost['chkExperimentou'])? $arrPost['chkExperimentou'] : array();
        $arrConviveSubstancias = isset($arrPost['chkConviveSub'])? $arrPost['chkConviveSub'] : array();
        
        $futuroAdolescente = $arrPost['FuturoAdolescente'];
        $futuroCrianca = $arrPost['FuturoCrianca'];
        
        $sql  = 'START TRANSACTION;';
        $sql .= 'INSERT INTO crianca (nome_crianca, sexo, peso, altura, data_nasc, cod_responsavel) VALUES (\'' . $nome_crianca . '\', \'' . $sexo . '\',\'' . $peso . '\',\'' . $altura . '\',\'' . format::date_human2mysql($data_nasc) . '\',' . $cod_responsavel .');';
        $sql .= 'SET @id = LAST_INSERT_ID();';
        
        if (!empty ($arrVacinasSelecionadas)){
            $i = 0;

            $sql .= 'INSERT INTO crianca_vacinas (cod_vacina, id_crianca, data_vacina) VALUES';

            for ($i = 0; $i < sizeof($arrVacinasSelecionadas); $i++) {

                if($i == (sizeof($arrVacinasSelecionadas) - 1) ){
                    $sql .= ' (\'' . $arrVacinasSelecionadas[$i] . '\', @id , \'' . format::date_human2mysql($arrDataVacinas[$i]) . '\');';
                } else {
                    $sql .= ' (\'' . $arrVacinasSelecionadas[$i] . '\', @id , \'' . format::date_human2mysql($arrDataVacinas[$i]) . '\'),';
                }

            }  
        
        }
        
        $sql .= 'INSERT INTO psicossociais (id_crianca, mora_com, relacionamento, quem_trabalha, renda_familiar, tempo_livre, esporte_favorito, violencia, substancias, convive_substancias, futuro_adolescente, futuro_crianca) VALUES (@id,\'' . $this->implodeArray($arrMoraCom) . '\',\'' . $relacionamento . '\',\'' . $this->implodeArray($arrTrabalhaQuem) . '\',\'' . $salarioFamilia . '\',\'' . $this->implodeArray($arrTempoLivre) . '\',\'' . $this->implodeArray($arrEsportesPratica) . '\',\'' . $this->implodeArray($arrViolencia) . '\',\'' . $this->implodeArray($arrExperimentou) . '\',\'' . $this->implodeArray($arrConviveSubstancias) . '\',\'' . $futuroAdolescente . '\',\'' . $futuroCrianca . '\');';
        
        $sql .= 'COMMIT;';
        
        return Banco::executarMultiQueries($sql);

    }
    
    public function cadastrarResponsavel($arrPost){
        
        $nome_responsavel = $arrPost['nome_responsavel'];
        $arrTelefone = $arrPost['telefone'];
        $endereco = $arrPost['rua'];
        $numero = $arrPost['numero'];
        $complemento = $arrPost['complemento'];
        $referencia = $arrPost['referencia'];
        $bairro = $arrPost['bairro'];
        
        $sql = 'INSERT INTO responsavel (nome_responsavel, telefone, rua, numero, complemento, referencia, bairro) VALUES ( \'' . $nome_responsavel . '\', \'' . $this->implodeArray($arrTelefone) . '\', \'' . $endereco . '\', \'' . $numero . '\', \'' . $complemento . '\', \'' . $referencia . '\', \'' . $bairro . '\')';
        
        return Banco::executar($sql);
    }
    
    private function implodeArray($arr){
        $str = empty ($arr)? '' : implode(';', $arr);
        
        LibAux::debug($str);
        
        return $str;
    }
    
    public function validarForm($arrCampos) {
        $arrCampos = LibAux::trimArr($arrCampos);

        foreach ( $arrCampos as $key => $value ) {
                if ( (
    //				$key == 'cobContaMov' or
                        $key == 'cobTipoMovimentacao' or
                        $key == 'cobContaDestino'
                        ) and $arrCampos[$key] == '0'
                ) {
                        $arrCampos[$key] = null;
                }
        }
        $post = new Validation($arrCampos);

    //		$post->add_rules('cobContaMov', 'required');
        $post->add_rules('txtDataMov', 'required', 'valid::date');
        $post->add_rules('cobTipoMovimentacao', 'required');

        $post->add_rules('txtValorMov', 'required');
        $post->add_rules('cobContaDestino', 'required');

        $objReturn->status   = $post->validate();
        $objReturn->arrErros = $post->errors();
        return $objReturn;
    }
    
}